package LeetCode;

/**
 * @Author：DijaH
 * @Date：2024/1/25 14:13
 * @Version：1.0.0
 * @Description： 第一个缺失的正数
 */
public class code41_FirstMissing {

    public static int firstMissingPositive(int [] arr){
        int l = 0;
        int r = arr.length;
        while (l < r){
            if(arr[l] == l + 1){

            }else if(arr[l] <= l || arr[l] > r || arr[arr[l]-1] == arr[l]){
                swap(arr,l,--r);
            }else {
                swap(arr,l,arr[l]-1);
            }
        }
        return l +1;
    }

    /**
     * 交换
     * @param arr
     * @param i
     * @param j
     */
    public static void  swap(int [] arr,int i ,int j){
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] =temp;
    }
}
